// 组合

// pipe 组合
let compose = function(f,g) {
    return function(x) {
        // 位置可以变化
        return f(g(x))
    }
}


var toUpperCase = function(x) { return x.toUpperCase(); };
var exclaim = function(x) { return x + '!'; };
var head = function(x) { return x[0]; };
// var reverse = reduce(function(acc, x){ return [x].concat(acc); }, []);

var shout = compose(exclaim, toUpperCase);
console.log(shout('this is compose'))


// 问题： if 怎么处理， 如果有逻辑关系怎么处理
// 逻辑关系可以通过组合结果进行计算
// dag组合

